import UIKit

@available(iOS 7.0, *)
extension QKC where AA :UIDynamicAnimator {
    open func referenceView_qk_g() -> QKC<AA,YY,ZZ, UIView? >{
		 self +^ self.value.referenceView
	}

    open func behaviors_qk_g() -> QKC<AA,YY,ZZ, [UIDynamicBehavior] >{
		 self +^ self.value.behaviors
	}

    open func isRunning_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isRunning
	}

    open func elapsedTime_qk_g() -> QKC<AA,YY,ZZ, TimeInterval >{
		 self +^ self.value.elapsedTime
	}

     open func delegate_qk_s(_ delegate:  UIDynamicAnimatorDelegate?) -> QKC<AA,YY,ZZ, UIDynamicAnimatorDelegate?>{
		return link(next: delegate).then_QK { $0.value.delegate = delegate }
	}
     open func delegate_qk_g() -> QKC<AA,YY,ZZ, UIDynamicAnimatorDelegate?>{
		 self +^ self.value.delegate
	}

    open func addBehavior_qk_f(_ behavior: UIDynamicBehavior) -> QKC<AA,YY,ZZ, UIDynamicBehavior>{
		 self +^ self.value.addBehavior(behavior) +^ behavior
	}

    open func removeBehavior_qk_f(_ behavior: UIDynamicBehavior) -> QKC<AA,YY,ZZ, UIDynamicBehavior>{
		 self +^ self.value.removeBehavior(behavior) +^ behavior
	}

    open func removeAllBehaviors_qk_f() -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.removeAllBehaviors()
	}

	// Returns the dynamic items associated with the animator’s behaviors that intersect a specified rectangle
    open func items_qk_f(in rect: CGRect) -> QKC<AA,YY,ZZ,[UIDynamicItem]>{
		 self +^ self.value.items(in:rect)
	}

	// Update the item state in the animator if an external change was made to this item
    open func updateItem_qk_f(usingCurrentState item: UIDynamicItem) -> QKC<AA,YY,ZZ, UIDynamicItem>{
		 self +^ self.value.updateItem(usingCurrentState:item) +^ item
	}

}

extension QKC where AA :UIDynamicAnimator {
	// The three convenience methods returning layout attributes (if associated to behaviors in the animator) if the animator was configured with collection view layout
    open func layoutAttributesForCell_qk_f(at indexPath: IndexPath) -> QKC<AA,YY,ZZ,UICollectionViewLayoutAttributes?>{
		 self +^ self.value.layoutAttributesForCell(at:indexPath)
	}

    open func layoutAttributesForSupplementaryView_qk_f(ofKind kind: String, at indexPath: IndexPath) -> QKC<AA,YY,ZZ,UICollectionViewLayoutAttributes?>{
		 self +^ self.value.layoutAttributesForSupplementaryView(ofKind:kind, at:indexPath)
	}

    open func layoutAttributesForDecorationView_qk_f(ofKind decorationViewKind: String, at indexPath: IndexPath) -> QKC<AA,YY,ZZ,UICollectionViewLayoutAttributes?>{
		 self +^ self.value.layoutAttributesForDecorationView(ofKind:decorationViewKind, at:indexPath)
	}

}

